libcurl 移植 支持https,openssl NDK (二)

您所在的位置:网站首页 gcc fpie libcurl 移植 支持https,openssl NDK (二)

libcurl 移植 支持https,openssl NDK (二)

#libcurl 移植 支持https,openssl NDK (二)| 来源: 网络整理| 查看: 265

一 、编译环境介绍:(有一部分原因是环境造成编译失败) 系统版本:ubuntu-16.04.3-desktop-amd64 64位(可以使用虚拟机) NDK版本:Android-ndk-r10b                  (已经测试,使用 Android-ndk-r17b无法通过) 源码版本: curl-7.61.0                 https://curl.haxx.se/download/curl-7.61.0.tar.gz(一个稳定不太旧的版本) 二、编译步骤,设置临时编译环境 1.下载 curl-7.61.0源码 包,解压 2.在curl-7.61.0

注:如果环境不一样,请修改脚本中如下几个导出的环境变量为自己的环境变量,需要自己确定工具链版本及api版本

_ANDROID_NDK="android-ndk-r10b"

_ANDROID_EABI="arm-linux-androideabi-4.9"

_ANDROID_API="android-L"

三、配置依赖库

 1.将 libcurl 移植 支持https,openssl NDK(一)中生成的库,头文件  放到 指定的目录 :例openssl/openssl64  2.在脚本中需要指定例:

 export LDFLAGS="-pie -fPIE -L$(pwd)/openssl64/lib" export CFLAGS="-pie -fPIE -I$(pwd)/openssl64/include"

--with-ssl=$(pwd)/openssl64

四、最重要的是脚本来了

以下是具体内容:(32、64稍有区别) curl_android_build.sh

#!/bin/bash LOCAL_NDK_HOME=/home/aa/android-ndk-r10b/ VERBOSE=1 set_env_aarch64(){ #编辑依赖库选项 libc libssl libcrypto libc #如何不链接libc 链接时可能会报pthread_xxxxx相关函数未定义,这是一个坑#点 #export LIBS="-ldl -lc -lssl -lcrypto" export LDFLAGS="-pie -fPIE -L$(pwd)/openssl64/lib" export CFLAGS="-pie -fPIE -I$(pwd)/openssl64/include" export CFLAGS="-DHAVE_OPENSSL -DHAVE_CONFIG_H -DBUILDING_LIBCURL -DCURL_STATICLIB -DUSE_OPENSSL -I${SYSROOT}/usr/include" export CC="${LOCAL_NDK_HOME}toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-gcc --sysroot=$SYSROOT" export ANDROID_SYSROOT=$SYSROOT export CROSS_SYSROOT=$ANDROID_SYSROOT } set_env_arm(){ #export LIBS="-ldl -lc -lssl -lcrypto" export PREFIX=$(pwd)/android-lib export SYSROOT="${LOCAL_NDK_HOME}platforms/android-L/arch-arm" export LDFLAGS="-pie -fPIE -L$(pwd)/openssl/lib" export CFLAGS="-pie -fPIE -I$(pwd)/openssl/include" export CC="${LOCAL_NDK_HOME}toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc --sysroot=$SYSROOT" export CXX="${LOCAL_NDK_HOME}toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ --sysroot=$SYSROOT" export ANDROID_SYSROOT=$SYSROOT export CROSS_SYSROOT=$ANDROID_SYSROOT } #make clean if test $1 -eq 1 ;then set_env_arm #指定编译配置选项 --host指定目标平台 --with-ssl开启https支 ./configure --prefix=$PREFIX \ --host=arm-androideabi_linux \ --with-ssl=$(pwd)/openssl \ --disable-share\ --enable-static \ --disable-dict \ --disable-ftp \ --disable-imap \ --disable-ldap \ --disable-ldaps \ --disable-pop3 \ --disable-proxy \ --disable-rtsp \ --disable-smtp \ --disable-telnet \ --disable-tftp \ --disable-zlib \ --without-ca-bundle \ --without-gnutls \ --without-libidn \ --without-librtmp \ --without-libssh2 \ --without-nss \ --without-zlib \ --prefix=$PREFIX #指定输出文件目录 make make install elif test $1 -eq 2 ;then set_env_aarch64 ./configure --host=aarch64-linux-androideabi \ --with-ssl$(pwd)/openssl64 \ --disable-share\ --enable-static \ --disable-dict \ --disable-ftp \ --disable-imap \ --disable-ldap \ --disable-ldaps \ --disable-pop3 \ --disable-proxy \ --disable-rtsp \ --disable-smtp \ --disable-telnet \ --disable-tftp \ --disable-zlib \ --without-ca-bundle \ --without-gnutls \ --without-libidn \ --without-librtmp \ --without-libssh2 \ --without-nss \ --without-zlib \ --prefix=/home/aa/Downloads/curl-7.61.0/out/arm64 #指定输出文件目录 make make install exit fi

 在命令终端上执行 sudo ./curl_android_build.sh 1 生成 v7 32位

 在命令终端上执行 sudo ./curl_android_build.sh 2 生成 v8 64位

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3